In a multiprocessor system, it is desirable to distribute the processing load among the various processors in the system. This function is often referred to as dynamic load balancing or processor assignment. Prior art systems have performed this function by utilizing fixed algorithms. One such algorithm is for all processors in the system to sequentially accept programs for execution as the programs require execution. Programs are often referred to as new jobs or processes. Another algorithm is to direct new programs to the processor that has the least amount of work. The techniques utilized by the prior art work well in certain types of processing environments. However, they suffer from the problems of not allowing the system administrator to adjust the dynamic loading algorithm to meet different conditions. In addition, the application programmer and/or user of a new program being assigned are given no control over how the processor assignments are made. The application programmer or user often have important information on which processor within a multiprocessor system should receive a particular job.
The problem then is to allow the assignment of processors for particular jobs to be adjusted by the system administrator and further to allow the application programmer or user of the program to adjust what processor or type of processor is utilized to run a particular program.